enum Face {
  ZPlus = 0, // Z+
  ZMinus = 5, // Z-
  XMinus = 1, // X-
  XPlus = 3, // X+
  YMinus = 2, // Y-
  YPlus = 4, // Y+
}
interface PointObject3 {
  x: number;
  y: number;
  z: number;
}
/**
 * @description
 * ```
 * 孔起点XYZ，其中孔终点XYZ由板面、孔起点、孔深换算得到
 * 板面为0时，终点在Z-方向上
 * 板面为5时，终点在Z+方向上
 * 板面为1时，终点在X+方向上
 * 板面为3时，终点在X-方向上
 * 板面为2时，终点在Y+方向上
 * 板面为4时，终点在Y-方向上
 * ```
 */
export function getEndPointByFace({
  face,
  startPoint,
  depth,
}: {
  face: Face;
  startPoint: PointObject3;
  depth: number;
}): PointObject3 {
  let endPoint = { ...startPoint }; // 孔终点的初始值为孔起点的坐标

  switch (face) {
    case Face.ZPlus:
      endPoint.z -= depth; // 终点在Z-方向上
      break;
    case Face.ZMinus:
      endPoint.z += depth; // 终点在Z+方向上
      break;
    case Face.XMinus:
      endPoint.x += depth; // 终点在X+方向上
      break;
    case Face.XPlus:
      endPoint.x -= depth; // 终点在X-方向上
      break;
    case Face.YMinus:
      endPoint.y += depth; //点在Y+方向上
      break;
    case Face.YPlus:
      endPoint.y -= depth; // 终点在Y-方向上
      break;
    default:
      throw new Error('无效的板面值');
  }
  return endPoint;
}
